/**  
 * All rights Reserved, Designed By <a href="www.itttq.com" target="_blank">www.itttq.com</a>
 * @date:   2017-07-21 11:42:21
 * @Copyright: 2017 <a href="www.itttq.com" target="_blank">www.itttq.com</a> Inc. All rights reserved. 
 */
package com.itttq.gshop.pbpm.controller;

import java.util.List;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.cache.annotation.CacheEvict;
import org.springframework.cache.annotation.Cacheable;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;

import com.itttq.gshop.domain.po.SysFloorPcPo;
import com.itttq.gshop.domain.to.FloorPcTo;
import com.itttq.gshop.domain.to.ResultPageTo;
import com.itttq.gshop.generic.controller.GenericController;
import com.itttq.gshop.pbpm.service.SysFloorPcService;

@RestController
@RequestMapping("sysFloorPc")
public class SysFloorPcController extends GenericController {
	private static final long serialVersionUID = -3556967786843030L;
	public static final String CACHE_KEY = "sysFloorPc";
	@Autowired
	private SysFloorPcService sysFloorPcService;
	
	/**
	 * 根据条件获取SysFloorPo对象，并返回查询的数据总数
	 * 
	 * @param sysFloor
	 * @Author 迷蝶
	 * @return ResultPageTo<SysFloorPcPo>
	 */
	@RequestMapping("list")
	public ResultPageTo<SysFloorPcPo> getSysFloorsByPage(@RequestBody SysFloorPcPo sysFloor) {
		return sysFloorPcService.getSysFloorsByPage(sysFloor);
	}
	/**
	 * 根据条件获取SysFloorPo对象，并返回查询的数据总数
	 * 
	 * @param sysFloor
	 * @Author 迷蝶
	 * @return ResultPageTo<SysFloorPcPo>
	 */
	@RequestMapping("floors")
    public List<SysFloorPcPo> getSysFloors(@RequestBody SysFloorPcPo sysFloor) {
        return sysFloorPcService.getSysFloors(sysFloor);
    }
	
	/**
	 * 根据ID获取SysFloorPo对象，并放入redis缓存
	 * 
	 * @param id	只能是数字
	 * @Author 迷蝶
	 * @return SysFloorPcPo
	 */
	@RequestMapping("/{id:^[0-9]*$}")
	@Cacheable(value=CACHE_KEY, key="'sysFloor_'+#id")
	public SysFloorPcPo getSysFloor(@PathVariable("id") int id) {
		return sysFloorPcService.getSysFloor(id);
	}
	
	/**
	 * 保存SysFloorPo对象，并清除此ID的缓存。<br>
	 * 如果ID存在，则更新对象；ID不存在则插入对象。
	 * 
	 * @param sysFloor
	 * @Author 迷蝶
	 * @return SysFloorPcPo
	 */
	@RequestMapping("/save")
	@CacheEvict(value=CACHE_KEY, key="'sysFloor_'+#sysFloor.id")
	public Integer saveSysFloor(@RequestBody SysFloorPcPo sysFloor) {
		int rs = 0;
		if(null == sysFloor) {return rs;}
		if(null == sysFloor.getId()) {
			rs = sysFloorPcService.addSysFloor(sysFloor);
		} else {
			rs = sysFloorPcService.updateSysFloor(sysFloor);
		}
		return rs;
	}
	
	/**
	 * 根据ID删除SysFloorPo对象，并清除此ID的缓存。<br>
	 * 
	 * @param id	只能是数字
	 * @Author 迷蝶
	 * @return SysFloorPcPo
	 */
	@RequestMapping("/del/{id:^[0-9]*$}")
	@CacheEvict(value=CACHE_KEY, key="'sysFloor_'+#id")
	public Integer delSysFloor(@PathVariable("id") int id) {
		return sysFloorPcService.delSysFloor(id);
	}
	
	/**
	 * 获取首页所有楼层以及楼层图片数据<br>
	 * 如有栏目楼层，则在楼层表增加一个分类来做
	 * 
	 * @Author 迷蝶
	 * @return List<FLoorTo>
	 */
	@RequestMapping("floorAndDatas")
	public List<FloorPcTo> getFloorsAndDatas() {
		return sysFloorPcService.getFloorsAndDatas();
	}
}